# -*- coding: utf-8 -*-
'''
Diogo Damião Nrº5338
'''


import dados
from operator import itemgetter

def estatistica_1():
    '''
    calculo da estatistica 1: numero de estabelecimentos por ano    '''
    lista = dados.lista_db()
    #ordena a lista por ano e por nome de estabelecimentos
    lista = sorted(lista, key=itemgetter(6,8))
    count = 0
    listaTemp = []
    ano = ""
    estabelicimento = ""
    bol = True
    for x in lista:
        #o primeiro dado da lista é guardado nas variáveis temporárias
        if bol == True:
            estabelicimento = x[8]
            ano = x[6]
            bol = False
            pass
        #compara o valor actual com o valor anterior, se for igual encrementa, se não acrescenta um valor á lista temporária
        if x[8] != estabelicimento or x == lista[len(lista)-1]:
            if x[6] != ano or x == lista[len(lista)-1]:
                listaTemp.append((ano,count))
                count = 1
            else:
                count += 1       
                pass
        estabelicimento = x[8]
        ano = x[6]
        pass
    
    return listaTemp

def estatistica_2():
    '''
    calculo da estatistica 2 : numero de professores por ano, por establecimento e por categoria '''
    lista = dados.lista_db()
    #ordena a lista por nome de estabelecimentos por ano e por categoria 
    lista = sorted(lista, key=itemgetter(8,6,4)) 
    count = 0
    listaTemp = []
    estabelecimento = ""
    ano = ""
    categoria = ""
    bol = True
    for x in lista:
        #o primeiro valor da lista é guardado nas variáveis temporárias
        if bol == True:
            categoria = x[4]
            ano = x[6]
            estabelecimento = x[8]
            bol = False
            pass
        #compara o valor actual com o valor anterior, se for igual encrementa, se não acrescenta um valor á lista temporária
        if x[8] == estabelecimento and x[6] == ano and x[4] == categoria and x != lista[len(lista)-1]:  
            count += 1
        else:
            listaTemp.append((ano,estabelecimento,categoria,count))
            count = 1
            pass
        estabelecimento = x[8]
        categoria = x[4]
        ano = x[6]
        pass
    return listaTemp

def estatistica_3():
    '''
    calculo das estatisticas 3 : numero de professores por nome de estabelecimentos,
    por ano, por categoria e por grau
    '''
    lista = dados.lista_db()
    #ordena a lista por nome de estabelecimentos, por ano, por categoria e por grau
    lista = sorted(lista, key=itemgetter(8,6,4,2))
    count = 0
    listaTemp = []
    estabelecimentos = ""
    ano = ""
    categoria = ""
    grau = ""
    bol = True
    for x in lista:
        #o primeiro dado da lista é guardado nas variáveis temporárias
        if bol == True:
            estabelecimentos = x[8]
            ano = x[6]
            categoria = x[4]
            grau = x[2]
            bol = False
            pass
        #compara o valor actual com o valor anterior, se for igual encrementa, se não acrescenta um valor á lista temporária
        if x[8] == estabelecimentos and x[6] == ano \
        and x[4] == categoria and x[2] == grau and x != lista[len(lista)-1]:  
            count += 1
        else:
            listaTemp.append((estabelecimentos,ano,grau,categoria, count))
            count = 1    
            pass
        estabelecimentos = x[8]
        ano = x[6]
        categoria = x[4]
        grau = x[2]
        pass
    return listaTemp
    
